JS数组操作 |
您所在的位置:网站首页 › js 声明数组 › JS数组操作 |
JS数组
前言数组声明数组应用自定义数组函数数组数据窗口化ArrayBuffer使用
前言
在JavaScript(以下简称JS)编程过程中,经常需要用到数组,对数组有很多操作,下面一起来看看数组的各种使用。 数组声明在JS中声明数组有2种方式直接用[]或new 关键字,对于TypeArray和ArrayBuffer只能用new关键字: var jsArray = []; var jsArray1 = new Array(); //TypeArray在声明时可直接传入一个数组赋初值:new Float32Array(array); var jsTypeArray = new Float32Array(); var jsArrayBuffer = new ArrayBuffer();//构造参数只有长度,声明可不传入长度 console.log(jsArray); console.log(jsArray1); console.log(jsTypeArray ); console.log(jsArrayBuffer);运行结果: []不需要指定长度,Array可以指定长度也可以设置初始值,结果如下: 向数组内添加元素: var jsArray = []; var jsArrayObj = new Array(); for (var i = 0; i jsArrayObj[i] = i;//jsArrayObj.push(i); } console.log(jsArray); console.log(jsArrayObj);使用索引添加或者push函数添加都可以: JS的prototype属性可以让你向数组添加方法或属性。比如我们给数组取个名字,定义一个函数,为了区分和JS本身的属性和函数,我们定义的使用大写字母开头,比如我们想求多个长度不一的数组的总和, 给声明的数组定义一个Sum方法: var jsArray = new Array([1,0,2,4],[1,0,2,4,2,0,4,8],[100,0]); jsArray.Name = "ArrayList"; jsArray.Sum = function () { var sum = 0; for (var i = 0; i //将5个长度为4的数组通过set函数依次赋给jsBuffer,i*4为开始索引,意思就是从i*4索引开始赋值 jsBuffer.set([0+i,1+i,2+i,3+i],i*4); } console.log(jsBuffer);//打印原始数据 //通过copyWithin函数将jsBuffer数组索引4-20的元素复制并往前移动4个位置 jsBuffer.copyWithin(0,4,20); console.log(jsBuffer);//打印移动后的数组,会发现原始数组0-4位置的元素被覆盖了,而后面多了一组一样的数据 //接着通过set函数将最后那一组数据替换 jsBuffer.set([5,6,7,8],16); console.log(jsBuffer);//打印结果 //再来一次 jsBuffer.copyWithin(0,4,20); jsBuffer.set([6,7,8,9],16); console.log(jsBuffer);是不是很有趣呢?看结果: 关于ArrayBuffer,它是个字节数组,和Java中的ByteArray作用差不多,固定长度的原始二进制数据缓冲区。我们不能直接操作ArrayBuffer,而是要通过TypeArray或者DataView来进行操作: 使用TypeArray操作ArrayBuffer: var jsBuffer = new ArrayBuffer(20); var jsUint8 = new Uint8Array(jsBuffer); var jsInt8 = new Int8Array(jsBuffer); var jsInt16 = new Int16Array(jsBuffer); var jsInt32 = new Int32Array(jsBuffer); //上面的数组可以不用全部声明,需要用的的才声明,这里是做演示 //我们来打印这些数组的长度, //ArrayBuffer没有length属性,因为它是字节数组 console.log("Buffer:" + jsBuffer.byteLength); console.log("Uint8:" + jsUint8.length);//一个Uint8占1个字节,长度为20 console.log("Int8:" + jsInt8.length);//一个Int8占1个字节,长度为20 console.log("Int16:" + jsInt16.length);//一个Int16占2个字节,长度为10 console.log("Int32:" + jsInt32.length);//一个Int32占4个字节,长度为5 //给Int32数组赋值,则其他数组会自动写入值 for (var i = 0; i jsInt16[j] = j * 10; } console.log(jsBuffer);问为什么ArrayBuffer里面没有Float类型的数组呢,因为这是字节数组,字节只能是int或uint储存。 如下所示: 本文到这里就结束了,感谢阅读,祝你有所收获! |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |